package com.caishi.lkx.exam.util;

import java.util.*;

public class RandomSelection {

    /**
     * 从集合中随机抽取指定数量的不重复元素
     * @param source 源集合
     * @param count 要抽取的数量
     * @return 抽取的元素列表
     */
    public static <T> List<T> randomSelect(List<T> source, int count) {
        if (source == null || source.isEmpty() || count <= 0) {
            return new ArrayList<>();
        }

        // 确保不超过源集合大小
        int actualCount = Math.min(count, source.size());

        // 创建副本避免修改原集合
        List<T> copy = new ArrayList<>(source);

        // 打乱顺序
        Collections.shuffle(copy);

        // 取前actualCount个元素
        return new ArrayList<>(copy.subList(0, actualCount));
    }
}

